import Tips from './Tips';

/**
 * 网络上传 管理
 *
 * @export
 * @class Uploader
 * [Uploader](http://www.html5plus.org/doc/zh_cn/uploader.html)
 * Uploader上传使用HTTP的POST方式提交数据，数据格式符合Multipart/form-data规范，即rfc1867（Form-based File Upload in HTML）协议。
 */
export default class Uploader {
    /**
     * 上传文件
     *
     * @static
     * @param {string} url 上传的服务器路径
     * @param {string} localFile 上传的本地文件和唯一键
     * @param {array} localParam 上传的相关参数
     * @returns
     * @memberof Uploader
     */
    static start(url, localFile, localParams = []) {
        return new Promise((resolve, reject) => {
            let task = plus.uploader.createUpload(url, {
                    method: "POST",
                    blocksize: 204800,
                    priority: 100
                },
                (res, status) => {
                    if (status == 200) {
                        resolve(res);
                    } else {
                        reject(status);
                    }
                    Tips.loaded();
                }
            );
            // [addFile](http://www.html5plus.org/doc/zh_cn/uploader.html#plus.uploader.Upload.addFile)
            task.addFile(localFile, { key: 'file' });
            // add params
            if (localParams.length) {
                localParams.forEach(item => {
                    task.addData(item.key, item.value);
                });
            }
            //task.addEventListener( "statechanged", onStateChanged, false );
            task.start();
            Tips.loading();
        });
    }

    /**
     * 开始所有上传任务
     *     开始所有处于未开始调度或暂停状态的上传任务。
     *
     * @static
     * @memberof Uploader
     */
    static startAll() {
        plus.uploader.startAll();	
    }

    /**
     * 清除上传任务
     *
     * @static
     * @memberof Uploader
     */
    static clear() {
        plus.uploader.clear();
    }
}